package GerenciadorDeEscolas;

import java.util.regex.*;

public class Escola {

	private String nome, endereco, nucleoDeEducacao, telefone, email, anoFundacao;
	
	/**
	 * construtor da classe
	 * @param nome
	 * nome da escola
	 * @param endereco
	 * endereco
	 * @param nucleoDeEducacao
	 * nucleo de educacao ao qual pertence
	 * @param anoFundacao
	 * ano da fundacao
	 * @param telefone
	 * telefone
	 * @param email
	 * email
	 */
	public Escola(String nome,String endereco, String nucleoDeEducacao, String anoFundacao, String telefone, String email ) throws Exception{
		checar(nome);
		checar(endereco);
		checar(nucleoDeEducacao);
		checarAno(anoFundacao);
		checarTelefone(telefone);
		checarEmail(email);
		this.nome = nome;
		this.endereco = endereco;
		this.nucleoDeEducacao = nucleoDeEducacao;
		this.telefone = telefone;
		this.email = email;
		this.anoFundacao = anoFundacao;
	}
	
	/**
	 * checa nomes para ver se nao sao nulos ou vazios
	 * @param nome
	 * nome a checar
	 * @return
	 * @throws Exception
	 */
	public boolean checar(String nome) throws Exception{
		if(nome==null || nome==""){
			throw new Exception("algum nome passado invalido");
		}
		return true;
	}
	
	/**
	 * checa o email
	 * @param email
	 * email
	 * @return
	 * @throws Exception
	 */
	public boolean checarEmail(String email) throws Exception{
		Pattern padrao = Pattern.compile("[a-z]@[a-z].[c]{1}[o]{1}[m]{1}");
        Matcher meta = padrao.matcher(email);
        Pattern padraoDois = Pattern.compile("[a-z]@[a-z].[c]{1}[o]{1}[m]{1}.[a-z]{2}");
        Matcher metaDois = padraoDois.matcher(email);
        if(meta.matches() && metaDois.matches()){
        	throw new Exception("E-mail invalido");
        }
		return true;
	}
	
	/**
	 * checa ano
	 * @param ano
	 * ano
	 * @return
	 * @throws Exception
	 */
	public boolean checarAno(String ano) throws Exception{
		Pattern padrao = Pattern.compile("[0-9]{4}");
        Matcher meta = padrao.matcher(ano);
        if(!meta.matches()){
        	throw new Exception("Ano invalido");
        }
		return true;
	}
	
	/**
	 * checa telefone
	 * @param tel
	 * telefone
	 * @return
	 * @throws Exception
	 */
	public boolean checarTelefone(String tel) throws Exception{
		Pattern padrao = Pattern.compile("[(]{1}[0-9]{2}[)]{1}[0-9]{4}-[0-9]{4}");
        Matcher meta = padrao.matcher(tel);
        if(!meta.matches()){
        	throw new Exception("Telefone invalido");
        }
		return true;
	}
	
	/**
	 * retorna o nome da escola
	 * @return
	 */
	public String getNome(){
		return nome;
	}
	
	/**
	 * retorna o endereco
	 * @return
	 */
	public String getEndereco(){
		return endereco;
	}
	
	/**
	 * retorna o nucleo de educacao ao qual pertence
	 * @return
	 */
	public String getNucleoDeEducacao(){
		return nucleoDeEducacao;
	}
	
	/**
	 * retorna o telefone da escola
	 * @return
	 */
	public String getTelefone(){
		return telefone;
	}
	
	/**
	 * retorna o email da escola
	 * @return
	 */
	public String getEmail(){
		return email;
	}
	
	/**
	 * retorna o ano da fundacao da escola
	 * @return
	 */
	public String getAnoFundacao(){
		return anoFundacao;
	}
	
	/**
	 * muda o atributo nome
	 * @param novoNome
	 * nome novo
	 */
	public void setNome(String novoNome) throws Exception{
		checar(novoNome);
		nome = novoNome;
	}
	
	/**
	 * muda o atributo endereco
	 * @param novoEndereco
	 * novo endereco
	 */
	public void setEndereco(String novoEndereco) throws Exception{
		checar(novoEndereco);
		endereco = novoEndereco;
	}
	
	/**
	 * muda o atributo nucleo de educacao
	 * @param novoNucleo
	 * novo nucleo de educacao
	 */
	public void setNucleoDeEducacao(String novoNucleo)throws Exception{
		checar(novoNucleo);
		nucleoDeEducacao = novoNucleo;
	}
	
	/**
	 * muda o atributo telefone
	 * @param novoTelefone
	 * novo telefone
	 */
	public void setTelefone(String novoTelefone)throws Exception{
		checarTelefone(novoTelefone);
		telefone = novoTelefone;
	}
	
	/**
	 * muda o atributo email
	 * @param novoEmail
	 * novo email
	 */
	public void setEmail(String novoEmail)throws Exception{
		checarEmail(novoEmail);
		email = novoEmail;
	}
	
	/**
	 * muda o atributo ano
	 * @param novoAno
	 * novo ano
	 */
	public void setAnoFundacao(String novoAno)throws Exception{
		checarAno(novoAno);
		anoFundacao = novoAno;
	}
	
	
	
}
